package com.wyp.demo.pattern.event;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: Oliver
 * @time: 2020/12/11/21:37
 * 事件源  包含发布事件的责任.以及注册监听器的责任.
 */
public class EventSource {

    // 所有的监听器
    private List<EventListener> list = new ArrayList<>();

    public EventSource regist(EventListener listener) {
        list.add(listener);
        return this;
    }

    /**
     * 向所有的监听器都发送事件消息.但是监听器只对自己感兴趣的事情进行处理
     *
     * @param event 事件
     */
    public void publisher(Event event) {
        for (EventListener eventListener : list) {
            eventListener.listener(event);
        }
    }
}
